不要让数据库“跑分”变成一门丑陋的生意
首先恭喜达梦国产数据库。
因为其上市已正式通过证监会的批准,必将成为国产数据库第一股。
达梦数据库这么多年的耕耘,这样的成绩实至名归。
接着,来谈谈最近数据库圈的一个乱象:”跑分“。
话说,有某大厂员工创业的公司,对各个云数据库厂商的云数据库服务做了一个跑分测试。
测试所采用是较为传统的 sysbench 基准测试工具。
本来这也无可厚非。
但最后,这位大聪明把每家云数据库厂家的测试分数汇总到了一张图。
最后,得出这些云数据库性能的排名结论。
然而,以上全错。
这是一件非常荒谬的事情,请问您这创业是想整点啥呢?
大多数人都知道 sysbench 测试在数据库行业中非常普遍。
但他是一种非常落后的测试标准。
测试的表仅有4个字段,且每行记录固定188字节。
CREATE TABLE `sbtest` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`k` int(10) unsigned NOT NULL DEFAULT '0',
`c` char(120) NOT NULL DEFAULT '',
`pad` char(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
KEY `k` (`k`));
索引也不多,1个主键索引,1个二级索引。
这和实际生产环境的数据库使用,完全不匹配。
如果拿手机的跑分软件安兔兔作为对比,sysbench 显得较为”业余“。
当然,sysbench 本来也不是一个专业的数据库测试工具。
他是一个系统测试工具,可以测试 CPU、Memory、I/O、数据库等。
相较之下, TPC-C 是相对更为专业的数据库测试工具。
库表结构和使用也更贴近真实业务场景。
所以,sysbench 成为数据库行业较为普及的标准工具,本身就有些诡异。
要说原因,大概率的原因可能是上手容易。
用 sysbench 做数据库压测,稍显有些不够专业。
不过,由于每家云数据库服务都用这个工具压测,所以这也不算太大的问题。
最重要的问题是最后将测试结果进行了汇总,并进行了排名。
这里最重要的问题是硬件规格无法统一。
请问 4 vCPU 16G 的规格是一致的么?
当提出这个问题,请问阁下该如何粉饰这个排行的目的?
Intel 和 AMD CPU的性能不一样。
Intel 第 14 代和前代的性能不一样。
内存 DDR4 和 DDR5 的性能不一样。
DDR5 4800MHz 和 DDR5 6400 MHz 性能不一样。
不同厂家的 NVME 磁盘的性能也不一样。
即使同一厂家,同一品牌,不同批次的性能可能都会有些差异。
所以,4 vCPU 16G 后面表示的具体硬件规格无从得知。
在测试结果中,所谓第1名 18% 的领先会不会仅仅只是本身 CPU 、内存、硬盘等硬件性能差异所导致的呢?
这样简单的汇总,做排行,和耍流氓有区别么?
前面小节讲的是硬件规格不一致,所以导致排行的结果存在不公正性。
除此之外,还有软件层面的不一致。
比如最简单的一点,这个云数据库版本是否启用了 PGO 的编译优化?
PGO 编译优化具体说明见:MySQL数据库性能提升竟达30%~50%?!原来这个优化这么厉害!
若开启了 PGO 编译优化,则在 sysbench 的基准测试中可以有至少 20% 的性能提升。
江湖传言,榜单中排名第一的云数据库厂商已经使用了编译优化的版本。
这个 18% 的领先,又会不会是编译优化所致?
要知道 PGO 编译优化虽好,但由于其是基于 profile 的优化手段,对非 sysbench 的 profile 场景,可能存在负优化。
所以,并不是所有云数据库厂家都会选择激进的方式开启。
此外,每家的数据库的配置参数也不相同。
当然,这和前一小节所说的硬件会有一定的关联关系。
所以,硬件不一致,软件也不一致,把各个测试成绩汇总到同一张图,意欲何为?
作为在这个行业待了这么久,又是顶级大厂背景的专家,会不明白上述这么浅显易懂的道理么?
是不是不应该呀?
原来文章的最后,他才写到限制与补充说明:
原来专家并不是不知道,而是无视。
既然知道其中这么大的差异,还非要做个折线图,说谁第一,谁好,这又是为啥呢?
直到打开这位专家所创业公司的首页,貌似一切就豁然开朗了:
到这,倏地想起了姜老师之前和数据作假的 PG 创业者辩论中提及的诚信问题。
脑中更是想起了老罗对王自如说的那句:
国产数据库赛道,百年一遇的的信创机遇。
为什么不像达梦学习,安安心心做产品,非要搞这些幺蛾子?
对于国产数据库,真心不希望这样的跑分变成一种常态。
更不要把手机测评那套手段,拿到数据库产品上,真心丑陋。
BTW:本文观点仅代表IMG社区成员李布衣的观点,不代表IMG社区观点。
往期推荐